/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package arkin.util;

import arkin.AND;
import arkin.Action;
import arkin.ActionDifferentialWheel;
import arkin.ActionLED;
import arkin.ActionPen;
import arkin.Actuator;
import arkin.Arbiter;
import arkin.ArkinPackage;
import arkin.Behavior;
import arkin.Binary;
import arkin.Constante;
import arkin.DifferentialWheel;
import arkin.DistanceSensor;
import arkin.EQUAL;
import arkin.EntryState;
import arkin.Expression;
import arkin.FSM;
import arkin.GT;
import arkin.GTE;
import arkin.IVisitable;
import arkin.IVisitor;
import arkin.LED;
import arkin.LT;
import arkin.LTE;
import arkin.LightSensor;
import arkin.NOT;
import arkin.OR;
import arkin.Pen;
import arkin.Robot;
import arkin.Sensor;
import arkin.State;
import arkin.TouchSensor;
import arkin.Transition;
import arkin.Unary;
import arkin.XOR;
import arkin.*;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see arkin.ArkinPackage
 * @generated
 */
public class ArkinSwitch<T> extends Switch<T> {
	/**
	 * The cached model package
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected static ArkinPackage modelPackage;

	/**
	 * Creates an instance of the switch.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ArkinSwitch() {
		if (modelPackage == null) {
			modelPackage = ArkinPackage.eINSTANCE;
		}
	}

	/**
	 * Checks whether this is a switch for the given package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @parameter ePackage the package in question.
	 * @return whether this is a switch for the given package.
	 * @generated
	 */
	@Override
	protected boolean isSwitchFor(EPackage ePackage) {
		return ePackage == modelPackage;
	}

	/**
	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the first non-null result returned by a <code>caseXXX</code> call.
	 * @generated
	 */
	@Override
	protected T doSwitch(int classifierID, EObject theEObject) {
		switch (classifierID) {
			case ArkinPackage.ROBOT: {
				Robot robot = (Robot)theEObject;
				T result = caseRobot(robot);
				if (result == null) result = caseIVisitable(robot);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.BEHAVIOR: {
				Behavior behavior = (Behavior)theEObject;
				T result = caseBehavior(behavior);
				if (result == null) result = caseExpression(behavior);
				if (result == null) result = caseIVisitable(behavior);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.SENSOR: {
				Sensor sensor = (Sensor)theEObject;
				T result = caseSensor(sensor);
				if (result == null) result = caseExpression(sensor);
				if (result == null) result = caseIVisitable(sensor);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.ACTUATOR: {
				Actuator actuator = (Actuator)theEObject;
				T result = caseActuator(actuator);
				if (result == null) result = caseIVisitable(actuator);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.DISTANCE_SENSOR: {
				DistanceSensor distanceSensor = (DistanceSensor)theEObject;
				T result = caseDistanceSensor(distanceSensor);
				if (result == null) result = caseSensor(distanceSensor);
				if (result == null) result = caseExpression(distanceSensor);
				if (result == null) result = caseIVisitable(distanceSensor);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.LIGHT_SENSOR: {
				LightSensor lightSensor = (LightSensor)theEObject;
				T result = caseLightSensor(lightSensor);
				if (result == null) result = caseSensor(lightSensor);
				if (result == null) result = caseExpression(lightSensor);
				if (result == null) result = caseIVisitable(lightSensor);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.ARBITER: {
				Arbiter arbiter = (Arbiter)theEObject;
				T result = caseArbiter(arbiter);
				if (result == null) result = caseIVisitable(arbiter);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.ACTION: {
				Action action = (Action)theEObject;
				T result = caseAction(action);
				if (result == null) result = caseIVisitable(action);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.TRANSITION: {
				Transition transition = (Transition)theEObject;
				T result = caseTransition(transition);
				if (result == null) result = caseIVisitable(transition);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.STATE: {
				State state = (State)theEObject;
				T result = caseState(state);
				if (result == null) result = caseIVisitable(state);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.FSM: {
				FSM fsm = (FSM)theEObject;
				T result = caseFSM(fsm);
				if (result == null) result = caseIVisitable(fsm);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.DIFFERENTIAL_WHEEL: {
				DifferentialWheel differentialWheel = (DifferentialWheel)theEObject;
				T result = caseDifferentialWheel(differentialWheel);
				if (result == null) result = caseActuator(differentialWheel);
				if (result == null) result = caseIVisitable(differentialWheel);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.LED: {
				LED led = (LED)theEObject;
				T result = caseLED(led);
				if (result == null) result = caseActuator(led);
				if (result == null) result = caseIVisitable(led);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.ACTION_LED: {
				ActionLED actionLED = (ActionLED)theEObject;
				T result = caseActionLED(actionLED);
				if (result == null) result = caseAction(actionLED);
				if (result == null) result = caseIVisitable(actionLED);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.ACTION_DIFFERENTIAL_WHEEL: {
				ActionDifferentialWheel actionDifferentialWheel = (ActionDifferentialWheel)theEObject;
				T result = caseActionDifferentialWheel(actionDifferentialWheel);
				if (result == null) result = caseAction(actionDifferentialWheel);
				if (result == null) result = caseIVisitable(actionDifferentialWheel);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.EXPRESSION: {
				Expression expression = (Expression)theEObject;
				T result = caseExpression(expression);
				if (result == null) result = caseIVisitable(expression);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.UNARY: {
				Unary unary = (Unary)theEObject;
				T result = caseUnary(unary);
				if (result == null) result = caseExpression(unary);
				if (result == null) result = caseIVisitable(unary);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.BINARY: {
				Binary binary = (Binary)theEObject;
				T result = caseBinary(binary);
				if (result == null) result = caseExpression(binary);
				if (result == null) result = caseIVisitable(binary);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.NOT: {
				NOT not = (NOT)theEObject;
				T result = caseNOT(not);
				if (result == null) result = caseUnary(not);
				if (result == null) result = caseExpression(not);
				if (result == null) result = caseIVisitable(not);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.AND: {
				AND and = (AND)theEObject;
				T result = caseAND(and);
				if (result == null) result = caseBinary(and);
				if (result == null) result = caseExpression(and);
				if (result == null) result = caseIVisitable(and);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.OR: {
				OR or = (OR)theEObject;
				T result = caseOR(or);
				if (result == null) result = caseBinary(or);
				if (result == null) result = caseExpression(or);
				if (result == null) result = caseIVisitable(or);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.XOR: {
				XOR xor = (XOR)theEObject;
				T result = caseXOR(xor);
				if (result == null) result = caseBinary(xor);
				if (result == null) result = caseExpression(xor);
				if (result == null) result = caseIVisitable(xor);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.LT: {
				LT lt = (LT)theEObject;
				T result = caseLT(lt);
				if (result == null) result = caseBinary(lt);
				if (result == null) result = caseExpression(lt);
				if (result == null) result = caseIVisitable(lt);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.GT: {
				GT gt = (GT)theEObject;
				T result = caseGT(gt);
				if (result == null) result = caseBinary(gt);
				if (result == null) result = caseExpression(gt);
				if (result == null) result = caseIVisitable(gt);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.EQUAL: {
				EQUAL equal = (EQUAL)theEObject;
				T result = caseEQUAL(equal);
				if (result == null) result = caseBinary(equal);
				if (result == null) result = caseExpression(equal);
				if (result == null) result = caseIVisitable(equal);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.LTE: {
				LTE lte = (LTE)theEObject;
				T result = caseLTE(lte);
				if (result == null) result = caseBinary(lte);
				if (result == null) result = caseExpression(lte);
				if (result == null) result = caseIVisitable(lte);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.GTE: {
				GTE gte = (GTE)theEObject;
				T result = caseGTE(gte);
				if (result == null) result = caseBinary(gte);
				if (result == null) result = caseExpression(gte);
				if (result == null) result = caseIVisitable(gte);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.CONSTANTE: {
				Constante constante = (Constante)theEObject;
				T result = caseConstante(constante);
				if (result == null) result = caseExpression(constante);
				if (result == null) result = caseIVisitable(constante);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.ENTRY_STATE: {
				EntryState entryState = (EntryState)theEObject;
				T result = caseEntryState(entryState);
				if (result == null) result = caseState(entryState);
				if (result == null) result = caseIVisitable(entryState);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.IVISITABLE: {
				IVisitable iVisitable = (IVisitable)theEObject;
				T result = caseIVisitable(iVisitable);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.IVISITOR: {
				IVisitor iVisitor = (IVisitor)theEObject;
				T result = caseIVisitor(iVisitor);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.BOOLEAN: {
				arkin.Boolean boolean_ = (arkin.Boolean)theEObject;
				T result = caseBoolean(boolean_);
				if (result == null) result = caseExpression(boolean_);
				if (result == null) result = caseIVisitable(boolean_);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.TOUCH_SENSOR: {
				TouchSensor touchSensor = (TouchSensor)theEObject;
				T result = caseTouchSensor(touchSensor);
				if (result == null) result = caseSensor(touchSensor);
				if (result == null) result = caseExpression(touchSensor);
				if (result == null) result = caseIVisitable(touchSensor);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.PEN: {
				Pen pen = (Pen)theEObject;
				T result = casePen(pen);
				if (result == null) result = caseActuator(pen);
				if (result == null) result = caseIVisitable(pen);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			case ArkinPackage.ACTION_PEN: {
				ActionPen actionPen = (ActionPen)theEObject;
				T result = caseActionPen(actionPen);
				if (result == null) result = caseAction(actionPen);
				if (result == null) result = caseIVisitable(actionPen);
				if (result == null) result = defaultCase(theEObject);
				return result;
			}
			default: return defaultCase(theEObject);
		}
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Robot</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Robot</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseRobot(Robot object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Behavior</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Behavior</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseBehavior(Behavior object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Sensor</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Sensor</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseSensor(Sensor object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Actuator</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Actuator</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseActuator(Actuator object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Distance Sensor</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Distance Sensor</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseDistanceSensor(DistanceSensor object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Light Sensor</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Light Sensor</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseLightSensor(LightSensor object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Arbiter</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Arbiter</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseArbiter(Arbiter object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Action</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Action</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseAction(Action object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Transition</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Transition</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseTransition(Transition object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>State</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>State</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseState(State object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>FSM</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>FSM</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseFSM(FSM object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Differential Wheel</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Differential Wheel</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseDifferentialWheel(DifferentialWheel object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>LED</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>LED</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseLED(LED object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Action LED</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Action LED</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseActionLED(ActionLED object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Action Differential Wheel</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Action Differential Wheel</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseActionDifferentialWheel(ActionDifferentialWheel object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Expression</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Expression</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseExpression(Expression object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Unary</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Unary</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseUnary(Unary object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Binary</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Binary</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseBinary(Binary object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>NOT</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>NOT</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseNOT(NOT object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>AND</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>AND</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseAND(AND object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>OR</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>OR</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseOR(OR object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>XOR</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>XOR</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseXOR(XOR object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>LT</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>LT</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseLT(LT object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>GT</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>GT</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseGT(GT object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>EQUAL</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>EQUAL</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseEQUAL(EQUAL object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>LTE</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>LTE</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseLTE(LTE object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>GTE</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>GTE</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseGTE(GTE object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Constante</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Constante</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseConstante(Constante object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Entry State</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Entry State</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseEntryState(EntryState object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>IVisitable</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>IVisitable</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseIVisitable(IVisitable object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>IVisitor</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>IVisitor</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseIVisitor(IVisitor object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Boolean</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Boolean</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseBoolean(arkin.Boolean object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Touch Sensor</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Touch Sensor</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseTouchSensor(TouchSensor object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Pen</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Pen</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T casePen(Pen object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>Action Pen</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>Action Pen</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
	 * @generated
	 */
	public T caseActionPen(ActionPen object) {
		return null;
	}

	/**
	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
	 * <!-- begin-user-doc -->
	 * This implementation returns null;
	 * returning a non-null result will terminate the switch, but this is the last case anyway.
	 * <!-- end-user-doc -->
	 * @param object the target of the switch.
	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
	 * @generated
	 */
	@Override
	public T defaultCase(EObject object) {
		return null;
	}

} //ArkinSwitch
